package com.bmadmin.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {
 
    public final static String Md5(String plainText ) { 
    	try { 
    	MessageDigest md = MessageDigest.getInstance("MD5"); 
    	md.update(plainText.getBytes()); 
    	byte b[] = md.digest(); 

    	int i; 

    	StringBuffer buf = new StringBuffer(""); 
    	for (int offset = 0; offset < b.length; offset++) { 
    	i = b[offset]; 
    	if(i<0) i+= 256; 
    	if(i<16) 
    	buf.append("0"); 
    	buf.append(Integer.toHexString(i)); 
    	} 

//    	System.out.println("result: " + buf.toString());//32位的加密 
//
//    	System.out.println("result: " + buf.toString().substring(8,24));//16位的加密 
        return buf.toString().trim();
    	} catch (NoSuchAlgorithmException e) { 
    	
    	e.printStackTrace(); 
    	 return null;
    	} 
    	} 
    public static String Md5_16(String plainText) {
    	  String result = null;
    	  try {
    	   MessageDigest md = MessageDigest.getInstance("MD5");
    	   md.update(plainText.getBytes());
    	   byte b[] = md.digest();
    	   int i;
    	   StringBuffer buf = new StringBuffer("");
    	   for (int offset = 0; offset < b.length; offset++) {
    	    i = b[offset];
    	    if (i < 0)
    	     i += 256;
    	    if (i < 16)
    	     buf.append("0");
    	    buf.append(Integer.toHexString(i));
    	   }
    	   // result = buf.toString();  //md5 32bit
    	   // result = buf.toString().substring(8, 24))); //md5 16bit
    	   result = buf.toString().substring(8, 24);
    	  
    	  } catch (NoSuchAlgorithmException e) {
    	   e.printStackTrace();
    	  }
    	  return result;
    	}
}